package com.hyt.it.ogt.kq.service.gov.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hyt.it.ogt.kq.service.gov.model.entity.TaskArea;

/**
 * <p>
 * 任务区域表 服务类
 * </p>
 *
 * @author huangyh
 * @since 2021-04-12
 */
public interface ITaskAreaService extends IService<TaskArea> {

    /**
     * 获取任务下的所有省份信息。
     * @param taskId
     * @return
     */
    List<TaskArea> getTaskProvince(String taskId);

    /**
     * 获取任务下的所有的市信息
     * @param taskId
     * @param provinceId
     * @return
     */
    List<TaskArea> getTaskCityByProvince(String taskId,String provinceId);

    /**
     * 获取任务下的所有的县区信息。
     *
     * @param taskId
     * @param cityId
     * @return
     */
    List<TaskArea> getTaskDistrictByCity(String taskId,String cityId);

    /**
     * 初始化考试任务区域信息
     * @param taskId
     * @param officeId
     */
    void initTaskArea(String taskId, String officeId);

    /**
     * 通过任务id获取所有任务区域数据
     * @param taskId 任务id
     * @return 任务区域数据
     */
    List<TaskArea> listByTaskId(String taskId);
    
    /**
     * 通过任务id获取所有任务区域数据
     * @param taskId 任务id
     * @return 任务区域数据
     */
    List<TaskArea> listByTaskIdAndAreaIds(String taskId, List<String> areaIds);

    /**
     * 复制任务区域数据
     * @param newId 新的任务id
     * @param oldId 要复制区域数据的任务id
     * @param userName 用户名
     */
    void copyTaskArea(String newId, String oldId, String userName);

    /**
     * 获取task下区域数据map
     * @param taskId 任务id
     * @return
     */
    Map<String,TaskArea> getTaskAreaMap(String taskId);

    /**
     * 将区域的id和父id放入到map中
     * @param taskId
     * @return
     */
    Map<String,String> taskAreaMap(String taskId);

    /**
     * 根据考试任务id删除区域数据
     * @param taskId
     */
    void deleteByTaskId(String taskId);

    /**
     * 随机获取一个县区id
     * @param taskId
     * @return
     */
    String randomGetOneDistrictId(String taskId);

    /**
     * 初始化虚拟区域、考点数据
     * @param taskId 考试任务id
     */
    void initVirtualAreaPlace(String taskId);

    /**
     * 获取自定义区域数据
     * @param taskId 考试任务id
     * @return 自定义区域数据
     */
    List<TaskArea> getCustomArea(String taskId);

    List<TaskArea> getTaskAreaList(String taskId);

    String getAreaFullName(String taskId, String district);
}
